home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet internetowy / Rozne / HTTrack 3.40-2 / httrack-3.40-2.exe / {app} / src_win / WinHTTrack / Infoend.cpp < prev    next >
C/C++ Source or Header  |  2004-06-12  |  8KB  |  300 lines

  1. // infoend.cpp : implementation file
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "Shell.h"
  6. #include "infoend.h"
  7. #include "iplog.h"
  8. #include "NewProj.h"
  9.  
  10. extern CNewProj* dialog0;
  11. extern "C" {
  12.   #include "htsbase.h"
  13.   HTS_INLINE int fspc(FILE* fp,char* type);
  14. }
  15.  
  16. #ifdef _DEBUG
  17. #define new DEBUG_NEW
  18. #undef THIS_FILE
  19. static char THIS_FILE[] = __FILE__;
  20. #endif
  21. extern HICON httrack_icon;
  22.  
  23. #include "winhttrack.h"
  24. extern CWinHTTrackApp* this_app;
  25.  
  26. #include "inprogress.h"
  27. extern Cinprogress* inprogress;
  28.  
  29. /* Externe C */
  30. extern "C" {
  31.   #include "HTTrackInterface.h"
  32.   #include "htslib.h"
  33. }
  34.  
  35. ///extern "C" int fexist(char*);
  36. //extern char* fconcat(char*,char*);
  37.  
  38. // Helper
  39. extern LaunchHelp* HtsHelper;
  40.  
  41. /* Main splitter frame */
  42. #include "DialogContainer.h"
  43. #include "splitter.h"
  44. extern CSplitterFrame* this_CSplitterFrame;
  45.  
  46. /* Main WizTab frame */
  47. #include "WizTab.h"
  48. extern CWizTab* this_CWizTab;
  49. extern CWizTab* this_intCWizTab2;
  50.  
  51. /* Objet lui mΩme */
  52. Cinfoend* this_Cinfoend=NULL;
  53.  
  54. /////////////////////////////////////////////////////////////////////////////
  55. // Cinfoend dialog
  56.  
  57. IMPLEMENT_DYNCREATE(Cinfoend, CPropertyPage)
  58.  
  59. Cinfoend::Cinfoend()
  60.     : CPropertyPage(Cinfoend::IDD)
  61. {
  62.   this_Cinfoend=this;
  63.     //{{AFX_DATA_INIT(Cinfoend)
  64.     //}}AFX_DATA_INIT
  65. }
  66.  
  67. Cinfoend::~Cinfoend() {
  68.   this_Cinfoend=NULL;
  69. }
  70.  
  71. void Cinfoend::DoDataExchange(CDataExchange* pDX)
  72. {
  73.     CPropertyPage::DoDataExchange(pDX);
  74.     //{{AFX_DATA_MAP(Cinfoend)
  75.     //}}AFX_DATA_MAP
  76. }
  77.  
  78.  
  79. BEGIN_MESSAGE_MAP(Cinfoend, CPropertyPage)
  80.     //{{AFX_MSG_MAP(Cinfoend)
  81.     ON_BN_CLICKED(IDlog, Onlog)
  82.     ON_BN_CLICKED(IDbrowse, Onbrowse)
  83.     ON_WM_HELPINFO()
  84.     ON_WM_TIMER()
  85.     ON_WM_DESTROY()
  86.     //}}AFX_MSG_MAP
  87.   ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipNotify )
  88.   ON_COMMAND(ID_HELP_FINDER,OnHelpInfo2)
  89.   ON_COMMAND(ID_HELP,OnHelpInfo2)
  90.     ON_COMMAND(ID_DEFAULT_HELP,OnHelpInfo2)
  91. END_MESSAGE_MAP()
  92.  
  93. /////////////////////////////////////////////////////////////////////////////
  94. // Cinfoend message handlers
  95.  
  96. BOOL Cinfoend::OnInitDialog() 
  97. {
  98.   UpdateData(false);      // force to call DoDataExchange
  99.  
  100.     //CPropertyPage::OnInitDialog();
  101.     
  102.   SetIcon(httrack_icon,false);
  103.   SetIcon(httrack_icon,true);  
  104.   EnableToolTips(true);     // TOOL TIPS
  105.   SetForegroundWindow();   // yop en premier plan!
  106.  
  107.   // Patcher l'interface pour les Franτais ;-)
  108.   if (LANG_T(-1)) {    // Patcher en franτais
  109.     //SetDlgItemTextCP(this, ,"");
  110.     //SetWindowTextCP(this, LANG(LANG_D6) /*"Fin du miroir"*/);
  111.     SetDlgItemTextCP(this, IDlog,LANG(LANG_D7) /*"Voir fichier d'audit"*/);
  112.     SetDlgItemTextCP(this, IDbrowse,LANG(LANG_D8) /*"Lancer Web"*/);
  113.     SetDlgItemTextCP(this_CWizTab, IDCANCEL,LANG_QUIT);
  114.     //SetDlgItemTextCP(this, IDC_NewProject,LANG_D9);
  115.     //SetDlgItemTextCP(this, IDOK,LANG_OK);
  116.   }
  117.  
  118.   int error = HTS_STAT.stat_errors;
  119.   if (error) {
  120.     SetDlgItemTextCP(this, IDlog,LANG_O14);
  121.     tm=SetTimer(WM_TIMER,250,NULL);
  122.   }
  123.  
  124.     return TRUE;
  125. }
  126.  
  127. void Cinfoend::Onlog() 
  128. {
  129.   char pathlog[HTS_URLMAXSIZE*2];
  130.   strcpybuff(pathlog,dialog0->GetPath());
  131.   Ciplog form;
  132.   if (strlen(pathlog)>0)
  133.   if ((pathlog[strlen(pathlog)-1]!='/') && (pathlog[strlen(pathlog)-1]!='\\'))
  134.     strcatbuff(pathlog,"/");
  135.   // fichier log existe ou on est tΘlΘcommandΘ par un !
  136.   if ( (fexist(fconcat(pathlog,"hts-err.txt"))) || (fexist(fconcat(pathlog,"hts-log.txt"))) ) {
  137.     strcpybuff(form.pathlog,pathlog);
  138.     form.DoModal();
  139.   } else {
  140.     char s[HTS_URLMAXSIZE*2];
  141.     sprintf(s,LANG(LANG_D1 /*"No log files in %s!"*/ ),pathlog);
  142.     AfxMessageBox(s,MB_OK+MB_ICONEXCLAMATION);
  143.   }
  144. }
  145.  
  146. void Cinfoend::Onbrowse() 
  147. {
  148.   char pathlog[HTS_URLMAXSIZE*2];
  149.   strcpybuff(pathlog,dialog0->GetPath());
  150.   if (strlen(pathlog)==0)
  151.     strcpybuff(pathlog,dialog0->GetPath());
  152.   Ciplog form;
  153.   if (strlen(pathlog)>0)
  154.   if ((pathlog[strlen(pathlog)-1]!='/') && (pathlog[strlen(pathlog)-1]!='\\'))
  155.     strcatbuff(pathlog,"\\");
  156.   if ( fexist(fconcat(pathlog,"index.html")) ) {
  157.     ShellExecute(this->m_hWnd,"open",fconcat(pathlog,"index.html"),"","",SW_RESTORE);    
  158.   } else {
  159.     char s[HTS_URLMAXSIZE*2];
  160.     sprintf(s,LANG(LANG_D2 /*"No index.html file in %s!"*/ ),pathlog);
  161.     AfxMessageBox(s,MB_OK+MB_ICONEXCLAMATION);
  162.   }
  163. }
  164.  
  165.  
  166.  
  167. // ------------------------------------------------------------
  168. // TOOL TIPS
  169. //
  170. // ajouter dans le .cpp:
  171. // remplacer les deux Wid1:: par le nom de la classe::
  172. // dans la message map, ajouter
  173. // ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipNotify )
  174. // dans initdialog ajouter
  175. // EnableToolTips(true);     // TOOL TIPS
  176. //
  177. // ajouter dans le .h:
  178. // char* GetTip(int id);
  179. // et en generated message map
  180. // afx_msg BOOL OnToolTipNotify( UINT id, NMHDR * pNMHDR, LRESULT * pResult );
  181. BOOL Cinfoend::OnToolTipNotify( UINT id, NMHDR * pNMHDR, LRESULT * pResult )
  182. {
  183.   TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *)pNMHDR;
  184.   UINT nID =pNMHDR->idFrom;
  185.   if (pTTT->uFlags & TTF_IDISHWND)
  186.   {
  187.     // idFrom is actually the HWND of the tool
  188.     nID = ::GetDlgCtrlID((HWND)nID);
  189.     if(nID)
  190.     {
  191.       char* st=GetTip(nID);
  192.       if (st != "") {
  193.         pTTT->lpszText = st;
  194.         pTTT->hinst = AfxGetResourceHandle();
  195.         return(TRUE);
  196.       }
  197.     }
  198.   }
  199.   return(FALSE);
  200. }
  201. char* Cinfoend::GetTip(int ID)
  202. {
  203.   switch(ID) {
  204.     case IDOK:     return LANG(LANG_D3 /*"Click to quit WinHTTrack"*/ ); break;
  205.     case IDlog:    return LANG(LANG_D4 /*"View log files"*/ ); break;
  206.     case IDbrowse: return LANG(LANG_D5 /*"Browse html start page"*/ ); break;
  207.     //case : return ""; break;
  208.   }
  209.   return "";
  210. }
  211. // TOOL TIPS
  212. // ------------------------------------------------------------
  213.  
  214.  
  215.  
  216. // Appel aide
  217. void Cinfoend::OnHelpInfo2() {
  218.   (void) OnHelpInfo(NULL);
  219. }
  220.  
  221. BOOL Cinfoend::OnHelpInfo(HELPINFO* dummy) 
  222. {
  223.   //return CPropertyPage::OnHelpInfo(pHelpInfo);
  224.   HtsHelper->Help("step5.html");
  225.   return true;
  226.   //AfxGetApp()->WinHelp(0,HELP_FINDER);    // Index du fichier Hlp
  227.   //return true;
  228. }
  229.  
  230. void Cinfoend::OnBye() 
  231. {
  232.   //this_CSplitterFrame->SetNewView(0,1,RUNTIME_CLASS(CDialogContainer));    
  233.   // // // this_CWizTab2->DestroyWindow(); // crash!!
  234.  
  235.   //delete this_intCWizTab2->m_tabprogress;  // agh..
  236.   //this_intCWizTab2->m_tabprogress=NULL; inprogress=NULL; this_app->m_tabprogress=NULL;    // re agh..
  237.  
  238.   /* tout effacer */
  239.   //##while(this_intCWizTab2->GetPageCount()>0)
  240.   //##  this_intCWizTab2->RemovePage(0);
  241.   
  242.   //##this_intCWizTab2=NULL;
  243.   GetMainWindow()->SendMessage(WM_COMMAND,wm_ViewRestart,0);
  244. }
  245.  
  246. BOOL Cinfoend::OnQueryCancel( ) {
  247.   //if (AfxMessageBox(LANG(LANG_J1),MB_OKCANCEL)==IDOK) {
  248.   /* Envoyer un WM_CLOSE α notre fenΩtre principale */
  249.   GetMainWindow()->SendMessage(WM_CLOSE,0,0);
  250.   //}
  251.   return FALSE;
  252. }
  253.  
  254. BOOL Cinfoend::OnSetActive( ) {
  255.   // dΘtruire ICI sinon crash!!!!
  256.   WHTT_LOCATION("Infoend");
  257.   if (this_intCWizTab2) {
  258.     this_intCWizTab2->DestroyWindow();
  259.     delete this_intCWizTab2;
  260.     this_intCWizTab2=NULL;
  261.   }
  262.  
  263.   this_CWizTab->SetWizardButtons(PSWIZB_FINISH);
  264.   SetWindowTextCP(this_app->GetMainWnd(), LANG_F18b);
  265.   SetDlgItemTextCP(this_CWizTab, IDCANCEL,LANG_QUIT);
  266.   return 1;
  267. }
  268.  
  269. BOOL Cinfoend::OnWizardFinish( ) {
  270.   OnBye();
  271.     return 0;
  272. }
  273.  
  274.  
  275. void Cinfoend::OnTimer(UINT nIDEvent) 
  276. {
  277.   static wflag=FALSE;
  278.  
  279.   wflag=!wflag;
  280.  
  281.   CWnd* wnd=GetDlgItem(IDlog);
  282.   if (wnd) {
  283.     CString st="";
  284.     if (wflag)
  285.       st=LANG_O14;
  286.     SetDlgItemTextCP(this, IDlog,st);
  287.   }
  288.   
  289.     CPropertyPage::OnTimer(nIDEvent);
  290. }
  291.  
  292. void Cinfoend::OnDestroy() 
  293. {
  294.   if (tm!=0) {
  295.     KillTimer(tm); 
  296.     tm=-1; 
  297.   }
  298.     CPropertyPage::OnDestroy();
  299. }
  300.